#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>

int main(int argc, char const *argv[])
{
    
    printf("main进程(%d)开始执行 \n", getpid());

    pid_t pid = fork();
    if (pid < 0)
    {
        printf("创建子进程失败 \n");
        return -1;
    } else if (pid == 0) // 子进程
    {
        printf("子进程(%d)开始执行\n", getpid());
        // 通过execve执行other程序
        char *path = "/home/zxf/桌面/gitway_240824/test/process_test/other";
        char *argv[] = {path, "abc", NULL}; // 要求最后一个元素为NULL
        char *envp[] = {NULL}; // 使用默认的环境变量， 要求最后一个元素为NULL， 或者直接为NULL
        int result = execve(path, argv, envp); // 如果目标程序正确执行， 那么execve函数不会返回， 否则返回-1
        printf("execve执行失败了\n");
    } else { // 父进程
        printf("父进程(%d)继续执行\n", getpid());
    }

    printf("进程(%d)结束执行 \n", getpid());
    return 0;
}
